导致XSS跨站漏洞普遍的因素有哪些
导致XSS跨站漏洞普遍的因素有以下这些:
Web浏览器本身的设计是不安全的。浏览器包含了解析和执行JavaScript等脚本语言的能力,这些语言可用来创建各种格式丰富的功能,而浏览器只会执行,不会判断数据和程序代码是否恶意。
输入与输出是Web应用程序最基本的交互,在这过程之中若没做好安全防护,Web程序很容易会出现XSS漏洞。
现在的应用程序大部分是通过团队合作完成的,程序员之间的水平参差不齐,很少有人受过正规的安全培训,因此,开发出来的产品难免存在问题。
不管是开发人员还是安全工程师,很多都没有真正意识到XSS漏洞的危害,导致这类漏洞普遍受到忽视。很多企业甚至缺乏专门的安全工程师,或者不愿意在安全问题上花费更多的时间和成本。
触发跨站脚本的方式非常简单,只要向HTML代码中注入脚本即可,而且执行此类攻击的手段众多,譬如利用CSS、Flash等。XSS技术的运用如此灵活多变,要做到完全防御是一件相当困难的事情。
随着Web2.0的流行,网站上交互功能越来越丰富。Web2.0鼓励信息分享与交互,这样用户就有了更多的机会去查看和修改他人的信息,比如通过论坛、Blog或社交网络,于是黑客也就有了更广阔的空间发动XSS攻击。
预防跨域导致的信息泄露的方法有以下这些:
对数据进行智能数据分类分级:如今敏感数据识别仍以人工标识、关键字、正则表达式或者文件指纹等方法为主,这些方法能够保证敏感数据识别的精确性,但是对于网络内的海量文件和网络流量,则显得效率过低,漏报率过高。只有利用机器学习等人工智能技术,综合有监督和无监督的学习过程,通过大量数据训练模型,覆盖所有结构化和非结构化的数据,才能控制数据共享出入口的所有文件和流量。
对跨域的数据进行加密解密操作:数据共享后可读范围的控制是数据主体责任的关键要素,只有数据拥有者才可控制数据的传播范围。最适合控制敏感数据传播的技术莫过于数据加解密技术,数据拥有者向授权的数据获得者发放密钥,当敏感数据从数据共享出入口离开时用密钥加密,此时只有获得了密钥的数据获得者才能解密数据。需要注意的是,由于网络流量无法存储,所以加解密技术只在网络流量数据落地后适用。
进行行为审计分析:数据在业务网络内部正常流转时泄露可能性非常低,只有当数据从共享出入口离开网络时,数据泄露可能性才陡然升高,因此在数据共享出入口记录数据流出日志,保留数据发送者、发送时间、目标接收人、敏感数据类别等关键信息,进行用户行为审计,识别异常行为是组织必须采取的检测措施。
对数据进行动态数据脱敏:在数据共享过程中,某些数据在共享前后要保持其部分可识别性和唯一性,此时可采用数据脱敏技术进行敏感数据保护。在数据共享出入口处,数据处于流动状态,因此适合动态数据脱敏技术,在数据传递的过程中进行脱敏。脱敏的方法支持截断、屏蔽、掩码、哈希和标识转换等常见方法。另外,由于网络流量需校验数据完整性,所以动态数据脱敏技术只能在网络流量数据落地后适用。
阻止跨域写操作,只要检测请求中的一个不可推测的标记(CSRF token)即可,这个标记被称为 Cross-Site Request Forgery (CSRF) 标记。你必须使用这个标记来阻止页面的跨站读操作。
阻止资源的跨站读取,需要保证该资源是不可嵌入的。阻止嵌入行为是必须的,因为嵌入资源通常向其暴露信息。
阻止跨站嵌入,需要确保你的资源不能通过以上列出的可嵌入资源格式使用。浏览器可能不会遵守 Content-Type 头部定义的类型。